def GetValue(protInfoList:list, index:int, key:str):  #输入协议信息列表（格式见上）、查询列表下标和查询对象的键，返回查询对象的值
    objStr = protInfoList[index]
    if key not in objStr:
        return None
    startIndex = objStr.find(key) + len(key) + 1     #到'='之后
    endIndex = objStr.find(key) + objStr[objStr.find(key):].find(' ') #键开始的下标+键值对长度=值结束的下标
    return objStr[startIndex:endIndex]

def GetIpVersion(protInfoList:list):          #获取IP版本号（返回值是字符串'IPv4'或'IPv6'）
    return GetValue(protInfoList, 0, 'type')

def GetType(protInfoList:list):               #获取协议类型
    if '<TCP' in protInfoList[2]:    #如果抓到了TCP包，根据端口号确定其上层协议
        if GetValue(protInfoList, 2, 'sport') == 'http' or GetValue(protInfoList, 2, 'dport') == 'http':
            return 'http'
        elif GetValue(protInfoList, 2, 'sport') == 'https' or GetValue(protInfoList, 2, 'dport') == 'https':
            return 'https'
        elif GetValue(protInfoList, 2, 'sport') == 'telnet' or GetValue(protInfoList, 2, 'dport') == 'telnet':
            return 'telnet'
        elif GetValue(protInfoList, 2, 'sport') == 'ftp' or GetValue(protInfoList, 2, 'dport') == 'ftp':
            return 'ftp'
        elif GetValue(protInfoList, 2, 'sport') == 'smtp' or GetValue(protInfoList, 2, 'dport') == 'smtp':
            return 'smtp'
        elif GetValue(protInfoList, 2, 'sport') == 'pop3' or GetValue(protInfoList, 2, 'dport') == 'pop3':
            return 'pop3'
        else:
            return 'tcp'
        
    elif '<UDP' in protInfoList[2]:   #如果抓到了UDP包，根据端口号确定其上层协议
        if GetValue(protInfoList, 2, 'sport') == 'domain' or GetValue(protInfoList, 2, 'dport') == 'domain':
            return 'dns'
        if GetValue(protInfoList, 2, 'sport') == 'bootpc' or GetValue(protInfoList, 2, 'dport') == 'dhcp':
            return 'dhcp'
        else:
            return 'udp'
        
    elif '<ARP' in protInfoList[1]:   #如果抓到了ARP包，那就一定只是ARP协议
        return 'arp'
    elif '<ICMP' in protInfoList[2]:  #如果抓到了ICMP包，还要加上具体的版本号
        return 'icmpv' + str(GetIpVersion(protInfoList))[-1]
    elif GetValue(protInfoList, 1, 'proto') == 'udp':  ####
        return 'udp'

def GetLength(protInfoList:list):             #获取包长度
    return str((len(protInfoList)))

def GetIpAddr(protInfoList:list):             #获取源和目的IP地址
    if GetType(protInfoList) == 'arp':
        srcIP = GetValue(protInfoList, 1, 'psrc')  
        dstIP = GetValue(protInfoList, 1, 'pdst')
    else:
        srcIP = GetValue(protInfoList, 1, 'src')
        dstIP = GetValue(protInfoList, 1, 'dst')
    return srcIP, dstIP

def GetMacAddr(protInfoList:list):            #获取源和目的MAC地址
    srcMac = GetValue(protInfoList, 0, 'src')
    dstMac = GetValue(protInfoList, 0, 'dst')
    return srcMac, dstMac

def GetPort(protInfoList:list):               #获取源和目的端口号（可能是None）
    if GetType(protInfoList) == 'arp' or GetType(protInfoList) == 'icmpv4' or GetType(protInfoList) == 'icmpv6':
        srcPort = None
        dstPort = None
    else:
        srcPort = GetValue(protInfoList, 2, 'sport')
        dstPort = GetValue(protInfoList, 2, 'dport')
        
    if GetType(protInfoList) == 'udp' and '<UDP' not in protInfoList[2]: ###
        srcPort = None
        dstPort = None
    
    # if len(data) > 0:
    #     for i in range(len(data), 0):
    #         if get_type_info(dpkt) == 'udp' and data[i][0] == 'udp' and get_source_info(dpkt)[0] == data[i][2] and \
    #                 get_source_info(dpkt)[1] == data[i][4]:
    #             sport = data[i][3]
    #             dport = data[i][5]
    #             break
    
    if srcPort in NP_Table:
        srcPort = NP_Table.get(srcPort)
    if dstPort in NP_Table:
        dstPort = NP_Table.get(dstPort)
        
    return srcPort, dstPort
   
#以上的函数在协议字段分析模块暂时没用上，用于后续的安全行为分析  


"""                                   protocol_info_list格式举例
    ICMPv6
    ['<Ether  dst=33:33:00:00:00:01 src=80:05:88:d7:48:43 type=IPv6 ', 
    '<IPv6  version=6 tc=0 fl=0 plen=64 nh=ICMPv6 hlim=255 src=fe80::8205:88ff:fed7:4843 dst=ff02::1 ', 
    '<ICMPv6ND_RA  type=Router Advertisement code=0 cksum=0x11d2 chlim=64 M=0 O=1 H=0 prf=Medium (default) P=0 res=0 routerlifetime=1800 reachabletime=0 retranstimer=0 ', 
    '<ICMPv6NDOptSrcLLAddr  type=1 len=1 lladdr=80:05:88:d7:48:43 ', 
    '<ICMPv6NDOptMTU  type=5 len=1 res=0x0 mtu=1500 ', 
    '<ICMPv6NDOptPrefixInfo  type=3 len=4 prefixlen=64 L=1 A=1 R=0 res1=0 validlifetime=0x278d00 preferredlifetime=0x93a80 res2=0x0 prefix=2001:250:4401:200:: ', 
    '>>>>>>']
    
    ICMPv4
    ['<Ether  dst=dc:1b:a1:d8:4d:39 src=58:69:6c:ec:ec:4f type=IPv4 ',
    '<IP  version=4 ihl=5 tos=0xc0 len=56 id=29 flags= frag=0 ttl=248 proto=icmp chksum=0xdc16 src=219.158.19.217 dst=10.121.235.224 ', 
    '<ICMP  type=time-exceeded code=ttl-zero-during-transit chksum=0xd4b6 reserved=0 length=0 unused=0 ',
    '<IPerror  version=4 ihl=5 tos=0x0 len=55 id=60726 flags= frag=0 ttl=1 proto=udp chksum=0xc2a3 src=10.121.235.224 dst=60.28.215.102 ',
    '<UDPerror  sport=msnp dport=8003 len=35 chksum=0xf99b ', '>>>>>']
    
    ARP
    ['<Ether  dst=ff:ff:ff:ff:ff:ff src=14:75:5b:ed:f3:3c type=ARP ', 
    '<ARP  hwtype=Ethernet (10Mb) ptype=IPv4 hwlen=6 plen=4 op=who-has hwsrc=14:75:5b:ed:f3:3c psrc=10.129.60.247 hwdst=00:00:00:00:00:00 pdst=10.129.255.254 ', 
    "<Padding  load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' ", 
    '>>>']
    
    TCP
    ['<Ether  dst=dc:1b:a1:d8:4d:39 src=80:05:88:d7:48:43 type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x4 len=40 id=51394 flags=DF frag=0 ttl=48 proto=tcp chksum=0x3105 src=184.26.43.73 dst=10.129.99.32 ', 
    '<TCP  sport=http dport=51450 seq=2862353490 ack=612393783 dataofs=5 reserved=0 flags=FA window=502 chksum=0x54e8 urgptr=0 ', 
    "<Padding  load='\\x00\\x00\\x00\\x00\\x00\\x00' ", 
    '>>>>']

    ['<Ether  dst=00:50:56:e0:1f:6d src=00:0c:29:70:8d:cb type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=60 id=35778 flags=DF frag=0 ttl=64 proto=tcp chksum=0x484c src=192.168.80.130 dst=20.42.65.89 ', 
    "<TCP  sport=36134 dport=https seq=3999708271 ack=0 dataofs=10 reserved=0 flags=S window=64240 chksum=0x66dc urgptr=0 options=[('MSS', 1460), ('SAckOK', b''), ('Timestamp', (3470420894, 0)), ('NOP', None), ('WScale', 7)] ", 
    '>>>']

    ['<Ether  dst=00:0c:29:70:8d:cb src=00:50:56:e0:1f:6d type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=44 id=3326 flags= frag=0 ttl=128 proto=tcp chksum=0xc720 src=20.42.65.89 dst=192.168.80.130 ', 
    "<TCP  sport=https dport=36134 seq=666530114 ack=3999708272 dataofs=6 reserved=0 flags=SA window=64240 chksum=0x6bc2 urgptr=0 options=[('MSS', 1460)] ", 
    "<Padding  load='\\x00\\x00' ", 
    '>>>>']

    ['<Ether  dst=00:0c:29:70:8d:cb src=00:50:56:e0:1f:6d type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=86 id=3481 flags= frag=0 ttl=128 proto=tcp chksum=0x28eb src=34.120.208.123 dst=192.168.80.130 ', 
    '<TCP  sport=https dport=54190 seq=1057246900 ack=533090778 dataofs=5 reserved=0 flags=PA window=64240 chksum=0x6f8 urgptr=0 ', 
    '<Raw  load="\\x17\\x03\\x03\\x00)\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\xf13\\xcf\\xa9\\xb0\\xdd\'\\xc2\\xb2*>e\\xd46\\x15\\xcb\\xac\\xf5/\\xb8\\xfaDV\\xd7\\x81\\xab\\x7f\\xc6\\xcf\\xe7\\xf5Qi" ', 
    '>>>>']

    (http req)
    ['<Ether  dst=00:50:56:e0:1f:6d src=00:0c:29:70:8d:cb type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=519 id=37511 flags=DF frag=0 ttl=64 proto=tcp chksum=0x5783 src=192.168.80.130 dst=117.21.200.166 ', 
    '<TCP  sport=33862 dport=81 seq=3092952613 ack=157431033 dataofs=5 reserved=0 flags=PA window=64240 chksum=0x50e0 urgptr=0 ', 
    "<Raw  load='GET /backend/content_detail.php?id=-1 HTTP/1.1\\r\\nHost: d4e71c39-7dad-4994-a2b1-e4847927b34e.node4.buuoj.cn:81\\r\\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0\\r\\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\\r\\nAccept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\\r\\nAccept-Encoding: gzip, deflate\\r\\nConnection: keep-alive\\r\\nUpgrade-Insecure-Requests: 1\\r\\nCache-Control: max-age=0\\r\\n\\r\\n' ", 
    '>>>>']

    (http res)
    ['<Ether  dst=00:0c:29:70:8d:cb src=00:50:56:e0:1f:6d type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=302 id=9583 flags= frag=0 ttl=128 proto=tcp chksum=0xc574 src=117.21.200.166 dst=192.168.80.130 ', 
    '<TCP  sport=81 dport=33862 seq=157431033 ack=3092953092 dataofs=5 reserved=0 flags=PA window=64240 chksum=0xe33d urgptr=0 ', 
    "<Raw  load='HTTP/1.1 200 OK\\r\\nServer: openresty\\r\\nDate: Sun, 09 Apr 2023 08:25:54 GMT\\r\\nContent-Type: application/json\\r\\nTransfer-Encoding: chunked\\r\\nConnection: keep-alive\\r\\nAccess-Control-Allow-Headers: *\\r\\nAccess-Control-Allow-Origin: *\\r\\nX-Powered-By: PHP/7.3.10\\r\\n\\r\\n2\\r\\n[]\\r\\n0\\r\\n\\r\\n' ", 
    '>>>>']

    UDP
    ['<Ether  dst=80:05:88:d7:48:43 src=dc:1b:a1:d8:4d:39 type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=55 id=54092 flags= frag=0 ttl=128 proto=udp chksum=0x0 src=10.129.99.32 dst=14.17.27.121 ', 
    '<UDP  sport=msnp dport=8005 len=35 chksum=0x975f ', 
    '<Raw  load=\'\\x1a\\x1c \\x056\\x0c2.17.0.00016\\x0b"2\\\\xc7\\\\xf8\\\\xa3<L\\\\\' ', 
    '>>>>']

    ['<Ether  dst=ff:ff:ff:ff:ff:ff src=00:50:56:c0:00:08 type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=78 id=38030 flags= frag=0 ttl=128 proto=udp chksum=0x83bf src=192.168.80.1 dst=192.168.80.255 ', 
    '<UDP  sport=netbios_ns dport=netbios_ns len=58 chksum=0xf492 ', 
    "<NBNSQueryRequest  NAME_TRN_ID=42517 FLAGS=272 QDCOUNT=1 ANCOUNT=0 NSCOUNT=0 ARCOUNT=0 QUESTION_NAME='WPAD           ' SUFFIX=workstation NULL=0 QUESTION_TYPE=NB QUESTION_CLASS=INTERNET ", 
    '>>>>']
    
    ['<Ether  dst=33:33:00:00:00:fb src=dc:1b:a1:d8:4d:39 type=IPv6 ',  DNS???
    '<IPv6  version=6 tc=0 fl=596201 plen=36 nh=UDP hlim=1 src=fe80::2892:5850:73e3:51a3 dst=ff02::fb ', 
    '<UDP  sport=5353 dport=5353 len=36 chksum=0x7c3a ', 
    "<DNS  id=0 qr=0 opcode=QUERY aa=0 tc=0 rd=0 ra=0 z=0 ad=0 cd=0 rcode=ok qdcount=1 ancount=0 nscount=0 arcount=0 qd=<DNSQR  qname='wpad.local.' qtype=A qclass=IN ",
    '> an=None ns=None ar=None ',
    '>>>>']
    
    DNS1
    ['<Ether  dst=dc:1b:a1:d8:4d:39 src=3a:ec:9c:df:6c:dc type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=165 id=38114 flags=DF frag=0 ttl=64 proto=udp chksum=0xcd21 src=192.168.43.1 dst=192.168.43.242 ',
    '<UDP  sport=domain dport=59816 len=145 chksum=0x2999 ', 
    "<DNS  id=63527 qr=1 opcode=QUERY aa=0 tc=0 rd=1 ra=1 z=0 ad=0 cd=0 rcode=ok qdcount=1 ancount=1 nscount=1 arcount=1 qd=<DNSQR  qname='caldav.163.com.' qtype=AAAA qclass=IN ",
    "> an=<DNSRR  rrname='caldav.163.com.' type=CNAME rclass=IN ttl=769 rdata='hdweb.mail.split.netease.com.' ", 
    "> ns=<DNSRRSOA  rrname='netease.com.' type=SOA rclass=IN ttl=35 mname='ns4.nease.net.' rname='admin.nease.net.' serial=20448887 refresh=7200 retry=1800 expire=1209600 minimum=60 ", 
    "> ar=<DNSRROPT  rrname='.' type=OPT rclass=1280 extrcode=0 version=0 z=0 rdlen=0 ", 
    '> ', 
    '>>>>']
    
    DNS2
    ['<Ether  dst=dc:1b:a1:d8:4d:39 src=3a:ec:9c:df:6c:dc type=IPv4 ', 
      '<IP  version=4 ihl=5 tos=0x0 len=145 id=38110 flags=DF frag=0 ttl=64 proto=udp chksum=0xcd39 src=192.168.43.1 dst=192.168.43.242 ', 
      '<UDP  sport=domain dport=61355 len=125 chksum=0xb103 ', 
      "<DNS  id=4413 qr=1 opcode=QUERY aa=0 tc=0 rd=1 ra=1 z=0 ad=0 cd=0 rcode=ok qdcount=1 ancount=3 nscount=0 arcount=0 qd=<DNSQR  qname='client.mail.163.com.' qtype=A qclass=IN ", 
      "> an=<DNSRR  rrname='client.mail.163.com.' type=CNAME rclass=IN ttl=1828 rdata='update.client.163.com.' ", 
      "<DNSRR  rrname='update.client.163.com.' type=CNAME rclass=IN ttl=84 rdlen=24 rdata='ntes53v6.mail.yeah.net.' ", 
      "<DNSRR  rrname='ntes53v6.mail.yeah.net.' type=A rclass=IN ttl=473 rdlen=4 rdata=45.254.50.196 ", 
      '>>> ns=None ar=None ', 
      '>>>>']
      
    HTTP Request
    ['<Ether  dst=80:05:88:d7:48:43 src=dc:1b:a1:d8:4d:39 type=IPv4 ', 
    '<IP  version=4 ihl=5 tos=0x0 len=857 id=10276 flags=DF frag=0 ttl=128 proto=tcp chksum=0x0 src=10.129.99.32 dst=157.255.209.248 ',
    '<TCP  sport=58086 dport=http seq=1673682526 ack=4178136290 dataofs=5 reserved=0 flags=PA window=517 chksum=0xe0e4 urgptr=0 ',
    '<HTTP  ', 
    "<HTTPRequest  Method='POST' Path='/mmtls/000019f8' Http_Version='HTTP/1.1' Accept='*/*' Cache_Control='no-cache' Connection='close' Content_Length='542' Content_Type='application/octet-stream' Host='szextshort.weixin.qq.com' Upgrade='mmtls' User_Agent='MicroMessenger Client' Unknown_Headers={b'X-Online-Host': b'szextshort.weixin.qq.com'} ", 
    '<Raw  load=\'\\x19\\\\xf1\\x04\\x00\\\\xa1\\x00\\x00\\x00\\\\x9d\\x01\\x04\\\\xf1\\x01\\x00\\\\xa8\\\\x996p\\x10\\x0b\\\\x8f\\\\x9f\\\\xd0\\\\xc2\\x19\\\\xa2Eqkl\\\\xb0͆\\\\x92z]\\\\xc8\\\\xe0\\x16\\\\xcc\\\'_\\\\xfb\\\\xffx\\\\xe5\\\\xc5d*\\\\xcdD\\x00\\x00\\x00o\\x01\\x00\\x00\\x00j\\x00\\x0f\\x01\\x00\\x00\\x00c\\x01\\x00\\t:\\\\x80\\x00\\x00\\x00\\x00\\x00H\\x00\\x0c8s+&\\\\xd6\\\\xc0\\x13\\\\xe903\\\\x81\\\\x8b\\x00H\\x19\\\\xa8r\\\\x84Ā\\\\xda\\x01\\\\xa7\\\\x98\\x7f#\\\\xd9xak\\\\xa2\\x14\\\\xf3\\\\xb9ZSٵt8\\\\xc2\\\\xfc\\\\xf1>[\\\\xf33\\\\xc7\\\\xc1\\\\xeba\\x18\\n\\\\xf6=ć\\\\xc6\\\\xf6\\\\x94\\\\xaa>^\\\\xe0M\\x06D~^\\\\xac5fY\\\\xc4\\\\xf4\\\\xe3\\\\x81Z\\\\xc6l\\\\xa7\\\\xdb\\x0b\\\\x9f\\\\xd11\\x19\\\\xf1\\x04\\x00$W\\\\xc7\\\\xc2\\\\xf1\\\\xcb9\\\\xbcu\\\\x96ڃ\\\\xfd\\\\x8f\\\\x9dy]XLԠ\\\\x80\\\\x9aU\\\\x92\\\\xa7\\\\x91\\\\xca\\\\xccխ\\\\x91\\\\xf6*Y\\\\xeb>\\x17\\\\xf1\\x04\\x01.\\\\xd6\\x02}\\\\xf5)}a,\\x17\\\\xfa\\\\xfc0\\\\xd0>uL\\\\xf9\\x15\\\\xceĒ\\\\xd0\\\\xcc1\\\\xf6\\\\xc90\\\\xb4\\\\xd2#\\\\xb0Od\\\\xb1\\\\x86M\\\\xd0;$^qx8\\\\xbeH\\\\x8cvj\\\\xf3s@\\\\xc3.#\\x08\\\\x97fLi\\t%\\\\xc8X\\\\xdb\\x17F\\\\x8a\\\\x92\\\\xf9\\\\x9d\\\\x85P\\\\xcas\\\\xd8\\x03ǆWj\\\\xf0\\x16\\\\xa1>ˆ\\\\xe8\\\\xf8\\\\xa5I\\\\xa6\\\\x96\\x1dZ\\\\xd4F<\\\\xe8nN\\\\xa4PI\\\\xad[ܻ\\\\x95\\x03\\\\x92\\\\xbc\\\\xf7\\\\xbc\\x07֑\\\\x9c\\\\xda[y9\\tA\\\\x80\\\\xcd\\\\xf7PCp\\\\xf5\\\\xe0.\\\\xa6
    \\\\xbd\\\\xf8\\\\x84;\\\\x9c\\\\xd9\\x0f\\\\x84\\\\xe2O\\\\xdd\\x1d@\\\\xa3\\\\xd8\\\\xed\\x0c]\\\\xd4"⫄\\\\xc8\\\\xf4\\\\xa8\\x10\\\\xf0\\\\xd6\\\\xf0)\\\\xff\\\\x88\\x08yT:\\x01\\x14h\\\\xf4-6\\\\x9b\\\\xdbC\\\\x96\\\\xccY\\\\xec8\\\\x95P<\\\\xe8vO\\\\x8cQ=_ݜx\\\\xab\\\\x8b&Ş\\\\xf7\\\\xde*ՠq\\x1bދmE(Nd\\\\xe6{Q!\\\\xbd\\\\xb8\\x18F\\\\xffY\\\\xcb\\\\xfd#\\\\xb4\\\\x8c\\\\x94\\\\x8c\\\\x9dKlo\\\\x88B\\\\x8b\\\\xfd\\x15\\\\xa5nY\\\\xc4n#@\\\\xb6\\\\xab&-\\\\xf6F\\\\xd6\\\\xe3]q6aw\\\\xfa\\\\x87\\x0f\\\\x97\\x0f\\x0c\\\\xd8\\x0ff,\\\\xc9L\\\\xe2h\\\\xd3A\\\\xae\\\\x9d\\\\xd7K}͘\\\\xaeg\\\\x8f\\\\xdf/\\\\xd3\\x1ch\\\\xa0\\\\xb4h\\\\xa0+I\\x01\\x1a\\\\xca\\x15\\\\xf1\\x04\\x00\\x17\\\\xfe\\\\x8d\\\\xd8;\\\\xe5L\\\\x8e\\x18\\\\xdc,\\\\\\\\x95\\\\xda\\\\xce\\\\xeb\\\\x9dC-\\\\x8b"\\\\xe9\\x17H\' ', 
    '>>>>>>']
    
    ['<Ether  dst=dc:1b:a1:d8:4d:39 src=80:05:88:d7:48:43 type=IPv4 ',
    '<IP  version=4 ihl=5 tos=0x0 len=352 id=5469 flags=DF frag=0 ttl=52 proto=tcp chksum=0x52a2 src=157.255.209.248 dst=10.129.99.32 ',
    '<TCP  sport=http dport=58086 seq=4178136290 ack=1673683343 dataofs=5 reserved=0 flags=PA window=501 chksum=0xb8ef urgptr=0 ',
    '<HTTP  ',
    "<HTTPResponse  Http_Version='HTTP/1.1' Status_Code='200' Reason_Phrase='OK' Connection='close' Content_Length='213' Content_Type='application/octet-stream' ",
    '<Raw  load=\'\\x16\\\\xf1\\x04\\x00.\\x00\\x00\\x00*\\x02\\x04\\\\xf1\\x00\\\\xa8\\x05\\\\x83\\\\xf8\\\\xfe\\\\xc9]IM\\xa0\\\\xd1\\\\xd0\\x13\\\\x88\\\\xfb#C\\\\xb3\\x16H\\\\xdcL\\\\xbe,;a\\\\xbf\\\\xcd\\\\xd1Ay\\t\\x00\\x00\\x00\\x01\\x00\\x16\\\\xf1\\x04\\x007\\\\xff7\\\\xa5\\\\xe5>x\\\\xd2\\x10\\\\xc8.\\\\xbe\\\\xben\\\\xde.\\\\x9d\\\\xd3-\\x7f\\\\xaa\\\\xab\\\\xfe\\\\xea\\\\xaa\\\\xc5\\\\xf2o\\\\xee\\\\xbeh$\\\\xea\\x0f<\\\\xee3\\\\xa2h\\\\xed\\x18&3\\\\xb9}\\\\\\x16\\x0cj\\\\xa1Q\\\\xfc?\\\\xf0h\\\\xd0\\x17\\\\xf1\\x04\\x00E\\\\xc1\\\\x83\\x08\\\\xb2F"\\n\\\\x8d7\\\\x82!<"ʔ\\x1e\\\\xaa\\x07\\\\xb4\\\\xe5\\\\xd3V\\x14\\\\x85\\\\xf7!\\\\xd7\\x15n\\\\xde\\x11\\x12/Q\\\\xedaȟB\\\\xfc\\\\x8cc\\x08E\\x1f\\n\\\\xdf\\x07e\\\\xed\\\\xe8\\\\x839:\\\\xb5\\x00\\\\xd1\\x01Z\\\\xa0:\\\\xbf\\\\xed\\\\x9d\\\\xed\\\\x86\\\\xed0K\\x15\\\\xf1\\x04\\x00\\x17\\\\xe1\\\\xb8R\\\\xdb]ώ\\\\x81\\x0c9\\\\xe2^\\\\xea\\\\xe3H\\x1d\\\\x8c\\\\xfb\\\\xf0T\\\\xca\\\\xde%\' ', 
    '>>>>>>']
    """